perm filename C[1,BGB]1 blob sn#001264 filedate 1972-10-22 generic text, type T, neo UTF8
00100	; ALTERNATE PDP-10 MNEMONICS.
00200		OPDEF LIP	[HLR]
00300		OPDEF LAP	[HRR]
00400		OPDEF DIP	[HRLM]
00500		OPDEF DAP	[HRRM]
00600		
00700		OPDEF LIPZ	[HLRZ]
00800		OPDEF LAPZ	[HRRZ]
00900		OPDEF DIPZ	[HRLZM]
01000		OPDEF DAPZ	[HRRZM]
01100		
01200		OPDEF SLIP	[HLL]
01300		OPDEF SLAP	[HRL]
01400		OPDEF STIP	[HLLM]
01500		OPDEF STAP	[HLRM]
01600		
01700		OPDEF SLIPZ	[HLLZ]
01800		OPDEF SLAPZ	[HRLZ]
01900		OPDEF STIPZ	[HLLZM]
02000		OPDEF STAPZ	[HLRZM]
02100		
02200		OPDEF ZIP	[HRRZS]
02300		OPDEF ZAP	[HLLZS]
02400		OPDEF WIP	[HRROS]
02500		OPDEF WAP	[HRRZS]
02600		
02700		OPDEF NIP	[HLRE]
02800		OPDEF NAP	[HRRE]
02900		OPDEF NIM 	[HRREI]
03000		OPDEF LIM    	[HRRI]
03100		OPDEF SLIM   	[HRLI]
03200		
03300		OPDEF CAR	[HLRZ]
03400		OPDEF CDR	[HRRZ]
03500	
03600		OPDEF LAC	[MOVE]
03700		OPDEF DAC	[MOVEM]
03800	 
03900		OPDEF GO 	[JRST]
04000		OPDEF LIMZ	[MOVEI]
04100		OPDEF SLIMZ	[MOVSI]
04200	
04300		OPDEF FIXX	[FIX 233000]
04400		OPDEF FLOAT	[FSC 233]
04500		DEFINE FLIM(AC,R)<HRLEI AC,(<R>)>;FLOATING IMMEDIATE.
04600	
04700		OPDEF LACN	[MOVN]
04800		OPDEF DACN	[MOVNM]
04900		OPDEF LACM	[MOVM]
05000		OPDEF DACM	[MOVMM]
     

00100	; SAIL LIKE SUBROUTINE LINKAGE.
00200		↓P ←← 17
00300		DEFINE SUBR(NAME){INTERN NAME↔↓NAME: ;}
00400		DEFINE CALL(NAME,X1,X2,X3,X4){
00500		IFDIF <> <X1> {PUSH P,X1
00600		IFDIF <> <X2> {PUSH P,X2
00700		IFDIF <> <X3> {PUSH P,X3
00800		IFDIF <> <X4> {PUSH P,X4}}}}
00900		PUSHJ P,NAME}
01000	;ARGUMENT FETCH.
01100		FOR @$ I←1,4{
01200		DEFINE ARG$I	<-I(17)>}
01300	;CALL AND RETURN VALUE.
01400		DEFINE SETQ (VAR,LIST){
01500		CALL(LIST)
01600		DAC 1,VAR}
01700	;RETURN N-ARGUMENTS  & OPTIONAL RESULT.
01800		FOR @$ I←1,4{
01900		DEFINE RET$I(R){IFDIF<><R><LAC 1,R>↔GO RET$I$.}
02000		↓RET$I$.: SUB P,[XWD I+1,I+1]↔GO @I+1(17)}
02100		DEFINE RET0(R){IFDIF<><R><LAC 1,R>↔POPJ P,}
02200	;ACCUMULATOR TRANSPARENCY.
02300		FOR @$ I←0,17{↓AC$I: 0↔}
02400		DEFINE SAVAC $(N){LAC[XWD 2,AC2]↔BLT AC$N}
02500		DEFINE GETAC (N){LAC[XWD AC2,2]↔BLT N}
02600	;MACROS FOR ALLOCATING AND NAMING WORKING SPACE.
02700		DEFINE ACCUMULATORS(LIST){ACPTR←←2
02800		FOR AC⊂(LIST)<AC←ACPTR↔ACPTR←←ACPTR+1↔>}
02900		DEFINE DECLARE (LIST){
03000		FOR VARNAM⊂(LIST)<VARNAM: 0↔>}
03100	;FATAL ERROR MESSAGE.
03200		DEFINE FATAL(STR){PUSHJ P,FATAL.↔ASCIZ/STR/}
03300	FATAL.:	OUTSTR[ASCIZ/
03400	FATAL - /]↔OUTSTR @(17)↔INCHRW↔GO .-1↔LIT